﻿#define _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
//求二进制里面有多少二进制的1
// 方法一：
//int main()
//{
//	int n = 10;
//	int count = 0;
//	while (n)
//	{
//		if (n % 2 == 1)
//			count++;
//		n = n / 2;
//	}
//	printf("%d", count);
//	return 0;
//}

//方法二：
//int print(int n)
//{
//	int count = 0;
//	for (int i = 0; i < 32; i++)
//	{
//		
//		if (((n >> i) & 1) == 1)
//			count++;
//    }
//	return count;
//}
//
//int main()
//{
//	int n = 0;
//	scanf("%d",&n);
//	int ret = print(n);
//	printf("%d", ret);
//	
//	return 0;
//}

//方法三：
//int main()
//{
//	int n = 10;
//	int count = 0;
//	while (n)
//	{
//		n = n & (n - 1);
//		count++;
//	}
//	printf("%d", count);
//	return 0;
//}

//二进制位置的0变成置1
//int main()
//{
//	int n = 13;
//	//0000000000000000 0000000000001101 -13的二进制
//	//0000000000000000 0000000000011101 -想变成的样子
//	//0000000000000000 0000000000000001
//	n = (1 << 4) | n;
//	printf("%d\n", n);
//	//要是想变回来的话，怎弄呢
//	n = ~(1 << 4)& n;
//	printf("%d\n", n);
//	return 0;
//}


//逗号表达式：  exp1,exp2,exp3,exp4  这个式子最终会以会从左到右的执行运算，直到式子的最后一位
//a = get_val();
//count_val(a);
//while (a > 0)
//{
//	//业务处理
//	a = get_val();
//	count_val(a);

//请用逗号表达式
//while (a = get_val(), count_val(a), a > 0)
//{
//	业务处理；
//}


//操作数：⼀个数组名 + ⼀个索引值
//int main() {
//	int arr[10];//创建数组
//	arr[9] = 10;//实⽤下标引⽤操作符。
//	//[] 的两个操作数是arr和9。
//	printf("%d", arr[9]);
//	return 0;
//}

//void test1()
//{
//	printf("hehe\n");
//}
//void test2(const char* str)
//{
//	printf("%s\n", str);
//}
//int main()
//{
//	test1(); //这⾥的()就是作为函数调⽤操作符。
//	test2("hello bit.");//这⾥的()就是函数调⽤操作符。
//	return 0;
//}

//结构体
//代码1;变量的定义
//struct point
//{
//	int x;
//	int y;
//}p1;    // 这里表示的全局变量
         // 声明的类型的同时定义变量p1
//
//struct point p2; //定义结构体变量p2    局部变量
//
//struct point p3 = { 10,20 };


//用结构体来表示学生
//名字+年龄+成绩
//struct stu  //比喻成模具
//{
//	char name[20];
//	int age;
//	float score;
//	//可以根据实际情况来添加
//}s3 = { "sad",23,24.4f }, s4 = {"sao",34,100.0f};  //如果不加f，那表示就是duble的类型的 加了才是float类型  这个是全局变量
// 
//int main()
//{
//	struct stu s1 = { "dedad",23,56.34f }; // 局部变量
//	struct stu s5 = {.score = 34.4f, .name = "asjdd", .age = 15 }; //指定顺序初始化
//	printf("s1.name = %s\n s5.score = %f\n s1.age = %d\n",s1.name,s5.score,s1.age);
//	return 0;
//}


//struct Stu //类型声明
//{
//    char name[15];//名字
//    int age; //年龄
//};
//
//int main()
//{
//    struct Stu s1 = { "zhangsan", 20 };//初始化
//    struct Stu s2 = { .age = 20, .name = "lisi" };//指定顺序初始化
//    return 0;
//}


//struct point 
//{
//    int x;
//    int y;
//};
//
//struct Data
//{
//    int num;
//    struct point p;
//};
//int main()
//{
//    struct Data d = { 2,{34,54} };
//    printf("num = %d p.x = %d p.y = %d", d.num,d.p.x,d.p.y);
//}

//struct Point
//{
//    int x;
//    int y;
//}p1;
//
//struct Node
//{
//    int data;
//    struct Point p;
//    struct Node* next;
//}n1 = { 10, {4,5}, NULL }; //结构体嵌套初始化
//int main() {
//    printf("%p", n1.next); 
//
//
//   // printf("data = %d\n n1.p.x = %d\n n1.p.y = %d\n ", n1.data, n1.p.x, n1.p.y );
//   //struct Node n2 = { 20, {5, 6}, NULL };//结构体嵌套初始化
//    return 0;
//}

//
//int main()
//{
//    int* ptr = NULL;
//    printf("空指针的值为L%s\n", (void*)ptr);
//    return 0;
//}

//名字+年龄+成绩
//struct stu
//{
//    char name[20];
//    int age;
//    float score;
//} p1 = { "dedsa",45,23.5f };  //全局变量的
//
//
//int main()
//{
//    结构体变量的指针 ：结构体指针->成员名
//    struct stu* ptr = &p1;
//    printf("ptr->name = %s\n,ptr->age = %d\n , ptr->score = %f\n", ptr->name,ptr->age,ptr->score);
//    
//
//    return 0;
//}

//创学生的一个结构体
//成绩+年龄+名字
//struct stu
//{
//    char name[20];
//    int age;
//    float score;
//};
// 
//int main()
//{
//    struct stu s1 = { .age = 15, .score = 15.5f, .name = "named" };
//    //打印这个结构的数
//    struct stu* ptr = &s1;
//    printf(" age =%d\n score =%f\n name = %s\n" , s1.age,s1.score,s1.name);
//    printf(" age =%d\n score =%f\n name = %s\n",ptr ->age,ptr->score,ptr->name);
//    return 0;
//}

//#include<string.h>
//struct Stu
//{
//    char name[15];//名字
//    int age; //年龄
//};
//void print_stu(struct Stu s)
//{
//    printf("%s %d\n", s.name, s.age);
//}
//void set_stu(struct Stu* ps)
//{
//    strcpy(ps->name, "李四");
//    ps->age = 28;
//}
//int main()
//{
//    struct Stu s = { "张三", 20 };
//    print_stu(s);
//    set_stu(&s);
//    print_stu(s);
//    return 0;
//}



//struct Stu
//{
//    char name[15];//名字
//    int age; //年龄
//};
//
//void print_stu(struct Stu s)  //打印
//{
//    printf("name = %s\n age = %d\n",s.name,s.age);
//}
//
//void set_stu(struct Stu* s)
//{
//    prinf("name = %s\n age = %d\n", s->name, s->age);
//}
//int main()
//{
//    struct Stu s = { "张三", 20 };
//    print_stu(s);
//    set_stu(&s);
//    print_stu(s);
//    return 0;
//}


int main()
{
    int a = 10;
    return 0;
}